home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: New Zealand Amiga Users Group / New Zealand Amiga Users Group Newsdisk v25 (1989-08)(NZAmigaUG).zip / New Zealand Amiga Users Group Newsdisk v25 (1989-08)(NZAmigaUG).adf / Lotto / lotto < prev    next >
Text File  |  1993-12-03  |  6KB  |  212 lines

  1. lotto:
  2. DEFINT a-z
  3. lowdensity=17:ldensity=0
  4.  GOSUB week:wk=7*week+1:setp=0:lweek=week
  5.  DIM ns(wk+7):DIM ldn(wk+7):DIM hit(40):DIM rc(80):DIM denos(80)
  6.  IF upd=1 THEN update
  7.  GOSUB getdata:GOSUB getdenos
  8. options:LOCATE 3,1:COLOR 1
  9.   PRINT "2.read lotto numbers 3.quit 4.main"
  10.   PRINT "5.graph 6.main-set ratio"
  11.   INPUT "enter option required";opt
  12.   IF opt=2 THEN reads
  13.   IF opt=3 THEN quit
  14.   IF opt=4 THEN density
  15.   IF opt=5 THEN dgraph
  16.   IF opt=6 THEN density1
  17.   GOTO options
  18. week:upd=0  
  19.     OPEN "nos" AS 1 LEN=2:FIELD 1,2 AS p$
  20.     GET #1,1:PRINT "current week number is";CVI(p$)
  21.     INPUT "hit return or enter new week number";week
  22.     IF week=0 THEN week=CVI(p$):CLOSE #1:RETURN
  23.     upd=1
  24.     LSET p$=MKI$(week):PUT #1,1:CLOSE #1:RETURN
  25. update:
  26.  GOSUB getdenos
  27.  OPEN "nos" AS 1 LEN=2:FIELD 1,2 AS p$
  28.  OPEN "denos" AS 2 LEN=2:FIELD 2,2 AS q$
  29.  FOR x=1 TO 40:denos(x)=denos(x+40):NEXT
  30.  FOR i=week*7-5 TO week*7+1
  31.  PRINT "enter number ";i-week*7+6;:INPUT;n:PRINT
  32.  denos(n+40)=(denos(n)+1)
  33.  LSET p$=MKI$(n):PUT #1,i:NEXT:CLOSE #1
  34.  FOR x=1 TO 80:LSET q$=MKI$(denos(x)):PUT #2,x:NEXT
  35.  CLOSE #2:END
  36. reads:
  37.  INPUT "enter week number to read";w
  38.  OPEN "nos" AS 1 LEN=2:FIELD 1,2 AS p$
  39.  FOR i=w*7-5 TO w*7+1
  40.  GET #1,i:n=CVI(p$):PRINT n;:NEXT:CLOSE #1: GOTO options
  41. quit:END
  42. density1:
  43. INPUT "enter ratio default=17";ldensity
  44. IF ldensity<>0 THEN lowdensity=ldensity
  45. density:
  46. INPUT "enter draw no required";week:CLS:wk=(week*7)-1
  47. LOCATE 1,1:PRINT "data to draw";week
  48. LOCATE 1,46:PRINT "draw";week+1
  49. IF week>lweek-2 THEN GOTO mark1  
  50. tden=0:FOR n=1 TO 40
  51.  d=0:FOR i=2 TO (week*7)+1
  52.  IF ns(i)=n THEN d=d+1
  53.  NEXT:ldn(n)=d:tden=tden+d
  54.  col=1:l=n
  55.  IF n>20 THEN 
  56.  col=10:l=n-20
  57.  END IF
  58.  LOCATE l+1,col:PRINT USING "####";n;d:NEXT 
  59.  GOTO mark2
  60. mark1:tden=0
  61.  IF lweek=week THEN sn=40
  62.  IF lweek>week THEN sn=0
  63.  FOR n=1 TO 40
  64.  ldn(n)=denos(n+sn):tden=tden+ldn(n)
  65.   col=1:l=n
  66.  IF n>20 THEN 
  67.  col=10:l=n-20
  68.  END IF
  69.   LOCATE l+1,col:PRINT USING "####";n;ldn(n):NEXT 
  70. mark2: 
  71. PRINT "total average density=";tden/40
  72.   lowden=1000:highden=1:FOR n=1 TO 40
  73.   IF ldn(n)<=lowden THEN 
  74.   lowden=ldn(n):ld=n
  75.   END IF
  76.   IF ldn(n)>=highden THEN
  77.   highden=ldn(n):hn=n
  78.   END IF
  79.   NEXT:x=2:hn=1:FOR n=1 TO 40
  80.   x1=x:y=22
  81.   IF x>21 THEN
  82.   x1=x-20:y=33
  83.   END IF
  84.   IF ldn(n)<10*(lowden+highden)/lowdensity THEN
  85.   GOSUB changecolor:hit(hn)=n:hn=hn+1
  86.   LOCATE x1,y:PRINT USING "####";n;ldn(n):x=x+1
  87.   END IF
  88.  COLOR 1:NEXT
  89.  avden=0
  90.  FOR w=1 TO 7
  91.  avden=avden+ldn(ns((week*7)+1+w))
  92.  i=wk
  93.  WHILE ns((week*7)+1+w)<>ns(i)
  94.  i=i-1
  95.  WEND
  96.  IF w=7 THEN COLOR 3
  97.  LOCATE w+1,44:PRINT USING "####";ns((week*7)+1+w);ldn(ns((week*7)+1+w)):NEXT:COLOR 1
  98.  LOCATE w+1,44:PRINT "current average density=";avden/7
  99. morerand: 
  100.  li=10:LOCATE 10,44:PRINT "random selection":rc=1
  101.  FOR p=1 TO 60
  102.  COLOR 1
  103.  IF p MOD 6=1 THEN
  104.   li=li+1:LOCATE li,44
  105.  END IF
  106.  GOSUB random 
  107.   GOSUB changecolor1:PRINT USING "####";hit(r);:NEXT:COLOR 1
  108.  LOCATE 1,59:PRINT "total selected";(hn-1)
  109.  LOCATE 2,59:PRINT "ratio=";lowdensity
  110.  LOCATE 1,22:PRINT "  selected numbers"
  111. REM LOCATE 3,59:PRINT "last   =";lastpicked 
  112. GOSUB wait2  
  113. GOTO options
  114. dgraph:CLS
  115. FOR x=1 TO 8
  116. LOCATE 20-2*x,1:PRINT USING "##";x*5:NEXT
  117.  FOR x=18 TO 650 STEP 6
  118.  LINE(x,30)-(x,150):NEXT
  119.  FOR x=0 TO 40:s=20
  120.  COLOR 0:IF x MOD 5<2 THEN COLOR 2
  121.  IF x MOD 5<2 THEN s=20
  122.  xx=30+3*x:LINE(s,xx)-(650,xx):NEXT
  123.  firstweek=week-99:fw=1
  124.  IF firstweek<1 THEN firstweek=1
  125.  FOR w=firstweek TO week
  126.   FOR i=w*7-5 TO w*7+1
  127.    FOR n=1 TO 40
  128.   IF ns(i)=n THEN LINE(13+6*fw,152-3*n)-(16+6*fw,151-3*n),3,BF
  129.   NEXT:NEXT:fw=fw+1:NEXT:z=0:COLOR 1
  130.   LOCATE 20,64:PRINT "last draw";week
  131.   LOCATE 20,1:PRINT "first draw";firstweek
  132. GOSUB wait1
  133. getdata:
  134.  OPEN "nos" AS 1 LEN=2:FIELD 1,2 AS p$
  135.  FOR i=2 TO (week*7)+1
  136.  GET #1,i:ns(i)=CVI(p$):NEXT:CLOSE #1:RETURN
  137. getdenos: 
  138.  OPEN "denos" AS 2 LEN=2:FIELD 2,2 AS q$
  139.  FOR x=1 TO 80
  140.  GET #2,x:denos(x)=CVI(q$):NEXT:CLOSE #2:RETURN
  141. wait1:a$="":a$=INKEY$
  142.    IF a$<>"" THEN options
  143.    GOTO wait1:RETURN
  144. wait2:a$="":a$=INKEY$
  145.    IF a$="l" THEN printselect
  146.    IF a$="p" THEN prob
  147.    IF a$="m" THEN morerand
  148.    IF a$<>"" THEN options
  149.    GOTO wait2:RETURN   
  150. changecolor:
  151.   FOR ii=(week*7)+2 TO (week*7)+8
  152.   IF n=ns(ii) THEN COLOR 3
  153.   NEXT:RETURN
  154. changecolor1:
  155.   FOR ii=(week*7)+2 TO (week*7)+8
  156.   IF hit(r)=ns(ii) THEN COLOR 3:rhit=rhit+1
  157.   NEXT:RETURN     
  158. fillhit:
  159.    FOR h=1 TO hn-1
  160.    IF n=hit(h) THEN ret1
  161.    NEXT:hit(hn)=n:hn=hn+1
  162. ret1:RETURN
  163. random:
  164.  RANDOMIZE TIMER
  165.  r=1+INT(RND*(hn-1))
  166.  chr=rc-6:IF chr<1 THEN chr=1
  167.  FOR a=chr TO rc
  168.  IF r=rc(a) THEN random
  169.  NEXT:rc=rc+1:rc(rc)=r 
  170.  RETURN
  171. prob:
  172.  LOCATE 21,35:INPUT "enter no of 10's to test";ten
  173.  LINE(265,160)-(600,184),0,BF
  174.  LOCATE 21,34:PRINT " no     one   two   three four five  six"
  175.  four=0:five=0:six=0:one=0:two=0:three=0
  176.  FOR b=1 TO ten*10
  177.  rhit=0:FOR c=1 TO 6
  178.  IF rc>60 THEN rc=1
  179.  GOSUB random:GOSUB changecolor1:NEXT
  180.  LOCATE 22,34:PRINT b
  181.  IF rhit=1 THEN one=one+1:LOCATE 22,41:PRINT one
  182.  IF rhit=2 THEN two=two+1:LOCATE 22,47:PRINT two
  183.  IF rhit=3 THEN three=three+1:LOCATE 22,53:PRINT three
  184. IF rhit=4 THEN four=four+1:LOCATE 22,59:PRINT four 
  185. IF rhit=5 THEN five=five+1:LOCATE 22,65:PRINT five
  186. IF rhit=6 THEN six=six+1:LOCATE 22,71:PRINT six
  187. NEXT
  188. GOTO wait2 
  189. printselect:
  190.   LOCATE 2,4:COLOR 3:INPUT "TURN ON PRINTER hit return";anyon:COLOR 1
  191.   OPEN "prt:" FOR OUTPUT AS #1 LEN=1
  192.   PRINT #1,(hn-1);"selected numbers for lotto draw";week+1;"density=";lowdensity
  193.   FOR pn=1 TO 9
  194.   PRINT #1,CHR$(9);hit(pn);
  195.   NEXT:PRINT #1,CHR$(27);"e"
  196.   FOR pn=10 TO 18
  197.   IF pn>hn THEN nomore
  198.   PRINT #1,CHR$(9);hit(pn);
  199.   NEXT:PRINT #1,CHR$(27);"e"
  200.   FOR pn=19 TO 27
  201.   IF pn>hn THEN nomore
  202.   PRINT #1,CHR$(9);hit(pn);
  203.   NEXT:PRINT #1,CHR$(27);"e"
  204.   FOR pn=28 TO 36
  205.   IF pn>hn THEN nomore
  206.   PRINT #1,CHR$(9);hit(pn);
  207.   NEXT:PRINT #1,CHR$(27);"e"
  208. nomore:CLOSE #1:RETURN
  209.    
  210.    
  211.    
  212.